package model.dao;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import model.Disciplina;
import model.Turma;

public class DisciplinaDaoImpl implements DisciplinaDao {
	List<Disciplina> listaDisciplinas = new ArrayList<Disciplina>();
	List<Turma> listaTurmas = new ArrayList<Turma>();
	
	public void cadastrar (String nome, String ementa, int cargaHoraria) {
		Disciplina disciplina = new Disciplina(nome,ementa,cargaHoraria);
		listaDisciplinas.add(disciplina);
	}
	
	public boolean carregar(String arquivo)
			throws FileNotFoundException, IOException {

		try{
			String linha;
			String nome = "";
			String ementa = "";
			int cargaHoraria = 0;

			File file = new File(arquivo);

			if (!file.exists()) {
				return false;
			}

			BufferedReader br = new BufferedReader(new FileReader(arquivo));

			while( (linha = br.readLine()) != null ){
				String[] line = linha.split("[;]");
				int i = 0;
				for (String str : line){
					i++;
					switch(i){
						case 1 : nome = str;
							break;
						case 2 : ementa = str;
							break;
						case 3 : cargaHoraria = Integer.parseInt(str);
							break;
					}
				}
				this.cadastrar (nome,ementa,cargaHoraria);
			}
			br.close();
		}catch(NumberFormatException e){
			System.out.println("N�o � poss�vel carregar o arquivo de Disciplina");
			System.out.println("\n\nPrograma Finalizado!");
			System.exit(1);
		}
		return true;
	}
	
	public void salvar(String arquivo, boolean adicionar)
		throws IOException {
			String nome;
			String ementa;
			int cargaHoraria;
			File file = new File(arquivo);
			file.delete();
			FileWriter fw = new FileWriter(arquivo, adicionar);
			for (Disciplina disciplina : this.listaDisciplinas) {
				nome = disciplina.getNome();
				ementa = disciplina.getEmenta();
				cargaHoraria = disciplina.getCargaHoraria();
				fw.write(nome +";" +ementa+";" +cargaHoraria+"; \n");
			}
			fw.close();
	}
	
	public List<Disciplina> getListaDisciplinas() {
		return listaDisciplinas;
	}

	public String getDisciplina(int idDisciplina) {
		Disciplina disciplina = listaDisciplinas.get(idDisciplina);
		return disciplina.getNome();
	}
}
